TODO

Helper functions.

use this to map the image cutting directly into the model: https://stackoverflow.com/questions/64326029/load-tensorflow-images-and-create-patches

ROC/auc curve stuff

k folds loop wrapped around the whole program basically.


Clean up the code to merge to main

Fix background / foreground accuracy thing. The model currently marks background as true and checks accuracy from that instead of looking at the text.

memory size errors -- Use the skimage library to convert images

Split program into three parts-- gather images, train, and evaluate. Make each able to run independently or through use of a superscript.

use jaccard / dice for training accuracy?

use library to make running on windows easier. \ /

Read more papers.

Test batch size. I notice a difference is small tests, but wtf is it actually. I wouldn't expect this to have any effect at all.

make a baseline network and code to run it. (I've got the network in the baseline form that I want; I just don't have the code to analyze it yet.

confusion matrix

Data augmentation  --  random rotations, overlap the test squares, etc.

Data Augmentation -- my generation idea - check generated data against original and delete if too similar to the original image

roc curve

color pixels -- mask correct / incorrect pixel output in green / red

Try smaller squares  -- Do a square size test after I have baseline model to work with

Adapt square size to text size? Is it possible?

test depth of the u-net

comparisons to other networks of other people.

Add all years

confusion matrix

k folds

Print runtime to a file.

Add ability to start from saved model so I don't take all day to test evry tiny change.

save image slice indexes when cutting up images for stitching back together purposes.

!!! Use scikit-images built in functions to convert image types !!!
https://scikit-image.org/docs/dev/user_guide/data_types.html
"You should never use astype on an image, because it violates these assumptions about the dtype range:"
Converting all my float images to uint8 should give me 4 times more memory to work with on GPU

Use jaccard and dice to estimate veracity.

Add jaccard and dice as functions to use during training.

Add nicer output of the four images for easier viewing.

Remove global variables; replace with function passing? how will that work with loading a model? if loading model, skip the import steps; add command line flag to load model.

Add function to start program using a saved model and saved images.

Invert all images after the final outputs are saved to disk. This way you don't mess up any of the intermediate code.

-- nice later stuff
Make a GUI to run tests easier. There could be radio buttons for each of the valid flags and a switch for starting fom a saved model. The switch could open a separate tab or something. There could be a built in console readout. I've done a bit of python gtk so it shouldn't be too difficult to hack something together.

Use os independent code for the file management. like os.path.join() etc

Investigate training on rectangles?
